
package com.be.beadmin.service.service;

import com.be.beadmin.common.entity.PageEntity;
import com.be.beadmin.service.dto.input.NotifyInfoTotalByPage;
import com.be.beadmin.service.dto.output.NotifyInfoTotalEx;
import com.be.beadmin.service.entity.NotifyInfo;
import com.be.beadmin.service.dto.output.NotifyTemplateInfoEx;
import com.be.beadmin.service.dto.input.NotifyTemplateInfoDto;
import com.be.beadmin.service.dto.input.NotifyTemplateInfoQueryCriteria;
import org.springframework.data.domain.Page;

import java.time.LocalDate;
import java.util.Date;
import java.util.Map;
import java.util.List;

/**
* @description 服务接口
* @author ljh
* @date 2023-09-20
**/
public interface NotifyTemplateInfoService {

    /**
    * 分页的查询接口
    * @param pageEntity
    * @return
    */
    Page<NotifyTemplateInfoEx> getNotifyTemplateInfoByPage(PageEntity pageEntity);

    Page<NotifyInfoTotalEx> getNotifyInfoTotalByPage2(NotifyInfoTotalByPage notifyInfoTotalByPage);

    /**
    * @param notifyTemplateInfoDto
    */
    void addNotifyTemplateInfo(NotifyTemplateInfoDto notifyTemplateInfoDto);

    /**
    * @param notifyTemplateInfoDto
    */
    void updateNotifyTemplateInfo(NotifyTemplateInfoDto notifyTemplateInfoDto);

    /**
    * @param id
    */
    void delNotifyTemplateInfo(String id);

    /**
    * 删除多个角色
    * @param userName,status
    */
    void delNotifyTemplateInfos (String userName,int status);

    /**
     * 获取用户 的所有未读未处理的通知待办
     * 第一个string：发送人
     * 第二个list：消息列表
     * @param username  接收人
     */
    Map<String, List<Object>> findNotReadNotifyTemplateInfoOfUserName(String username);

    Page<NotifyInfoTotalEx> getNotifyInfoTotalByPage(NotifyInfoTotalByPage notifyInfoTotalByPage);

    void readOneOrManyOrAllNotify(String userName,String notifyType,int status,List<String> notifyTemplateInfoIdList);

    void sendNotify(NotifyInfo notifyInfo, int status, String receiverName,String receiverId);

    void readAllNotify(String userName, String notifyType, int status);

    void generateNotifyTemplateInfoOfInspectTask(String username, Date currentDate);
}